#! /usr/bin/perl

open(FILE,"<$ARGV[0]");
read(FILE,$header,64);

($magic,$version)=unpack("a8l",$header);

#print "magic=$magic version=$version\n";

select STDOUT; $| = 1;

$count=$ARGV[1];
while ($count) {
	read(FILE,$record,64);
	$count--;
}

while (read(FILE,$record,64))
{
	($flags,$status,$mode,$hdop,$vdop,$pdop,$sats,$timestampl,$timestamph,$latitude,$longitude,$altitude,$speed,$direction)=unpack("SCCCCCCLLddddd",$record);


	if ($mode == 3) {
		($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($timestampl); 
		$datestring=sprintf("%02d.%02d.%d %02d:%02d:%02d",$mday,$mon+1,$year+1900,$hour,$min,$sec);	
		$long_dir="E";
		$lat_dir="N";
		if ($longitude < 0) {
			$long_dir="W";
			$logitude=-$longitude;
		}
		if ($latitude < 0) {
			$lat_dir="S";
			$latitude=-$latitude;
		}
		$long_deg=int($longitude);
		$lat_deg=int($latitude);
		$long_gps=$long_deg*100+($longitude-$long_deg)*60;
		$lat_gps=$lat_deg*100+($latitude-$lat_deg)*60;
		$lastpos="$lat_gps $lat_dir $long_gps $long_dir";
		printf("\$GPGGA,%02d%02d%02d,%s,%s,%s,%s,1,%d,%s,%s,M,,,,0000*0C\n",$hour,$min,$sec,$lat_gps,$lat_dir,$long_gps,$long_dir,$sats,$hdop,$altitude);
		printf("\$GPVTG,%s,T,,M,,N,%s,K,*6A\n",$direction,$speed*1.852);
		printf(STDERR "\$GPGGA,%02d%02d%02d,%s,%s,%s,%s,1,%d,%s,%s,M,,,,0000*0C\n",$hour,$min,$sec,$lat_gps,$lat_dir,$long_gps,$long_dir,$sats,$hdop,$altitude);
		sleep(1);
	}	
}
